/**
 *
 *  (c) 2010-2018 Paweł Fus
 *
 *  License: www.highcharts.com/license
 *
 *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
 *
 * */
"use strict";
var chartNavigation = {
  /**
   * Initializes `chart.navigation` object which delegates `update()` methods
   * to all other common classes (used in exporting and navigationBindings).
   *
   * @private
   * @param {Highcharts.Chart} chart
   *        The chart instance.
   * @return {void}
   */
  initUpdate: function (chart) {
    if (!chart.navigation) {
      chart.navigation = {
        updates: [],
        update: function (options, redraw) {
          this.updates.forEach(function (updateConfig) {
            updateConfig.update.call(updateConfig.context, options, redraw);
          });
        },
      };
    }
  },
  /**
   * Registers an `update()` method in the `chart.navigation` object.
   *
   * @private
   * @param {Highcharts.ChartNavigationUpdateFunction} update
   *        The `update()` method that will be called in `chart.update()`.
   * @param {Highcharts.Chart} chart
   *        The chart instance. `update()` will use that as a context
   *        (`this`).
   * @return {void}
   */
  addUpdate: function (update, chart) {
    if (!chart.navigation) {
      this.initUpdate(chart);
    }
    chart.navigation.updates.push({
      update: update,
      context: chart,
    });
  },
};
export default chartNavigation;
